package com.eastfair.builder.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.builder.dto.ReportDrawingDTO;
import com.eastfair.builder.entity.ReportDrawing;
import com.eastfair.builder.entity.ReportSite;
import com.eastfair.builder.entity.ReportSpace;
import com.eastfair.builder.vo.ReportDrawingCategoryVO;
import com.eastfair.builder.vo.ReportDrawingVO;
import com.eastfair.home.dto.ReportDrawingCategoryAuditDTO;

import java.util.List;
import java.util.function.LongFunction;

/**
 * <p>
 * 业务接口
 * 报馆图纸
 * </p>
 *
 * @author dq
 * @date 2022-08-06
 */
public interface ReportDrawingService extends SuperService<ReportDrawing> {

    /**
     * 查询图纸分类列表.
     *
     * @param reportSpaceId the report space id
     * @return the list
     */
    List<ReportDrawingCategoryVO> listCategoryVOByReportSpaceId(Long reportSpaceId);

    /**
     * 审核未通过或未提交时使用展会ID查询图纸分类列表.
     *
     * @param exhibitionId  the exhibition id
     * @param reportSpaceId the report space id
     * @param isDouble      the is double
     * @param isPoint       the is point
     * @return the list
     */
    List<ReportDrawingCategoryVO> listCategoryVOWhenNotApprovedByExhibitionId(Long exhibitionId, Long reportSpaceId, Integer isDouble, Integer isPoint);

    /**
     * 是否需要场馆审核
     *
     * @param reportSpaceId the report space id
     * @param isDouble      the is double
     * @param isPoint       the is point
     * @return the need venue audit
     */
    boolean getNeedVenueAudit(Long reportSpaceId, Integer isDouble, Integer isPoint);

    /**
     * 报馆ID，图纸分类ID查询报馆图纸列表.
     *
     * @param reportSpaceId the report space id
     * @param drawingId     the drawing id
     * @return the list
     */
    List<ReportDrawingVO> listVOByReportSpaceId(Long reportSpaceId, Long drawingId);

    /**
     * 报馆ID查询报馆图纸列表.
     *
     * @param reportSpaceId the report space id
     * @return the list
     */
    List<ReportDrawing> listByReportSpaceId(Long reportSpaceId);

    /**
     * 查询报馆图纸列表.
     *
     * @param query the query
     * @return the list
     */
    List<ReportDrawing> listReportDrawings(ReportDrawingDTO query);

    /**
     * 保存报馆图纸.
     *
     * @param reportDrawingDTO the query
     * @return the boolean
     */
    boolean saveReportDrawings(ReportDrawingDTO reportDrawingDTO);

    /**
     * 报馆ID创建报馆图纸分类审核列表.
     *
     * @param reportSpaceId the report space id
     * @return the list
     */
    List<ReportDrawingCategoryAuditDTO> createAuditListByReportSpaceId(Long reportSpaceId);

    /**
     * 报馆ID删除报馆图纸
     *
     * @param reportSpaceId the report space id
     * @return the boolean
     */
    boolean removeByReportSpaceId(Long reportSpaceId);

    /**
     * 图纸url删除图纸记录.
     *
     * @param list the list
     * @return the boolean
     */
    boolean removeByImageUrl(List<String> list);
}
